﻿using System;
using System.Windows.Forms;
//
class frmPrincipalMaca : frmPrincipalBase
{
    public frmPrincipalMaca()
    {
        InitializeComponent(); // Llamada necesaria para el Diseñador de Windows Forms.
        // .Agregue cualquier inicialización después de la llamada a InitializeComponent().
    }
    //
    private void InitializeComponent()
    {
        this.SuspendLayout();
        this.ClientSize = new System.Drawing.Size(719, 373);
        this.Cursor = System.Windows.Forms.Cursors.Default;
        this.Name = "PrincipalMaca";
        Load += PrincipalMaca_Load;
        this.ResumeLayout(false);
    }
    /// <summary>
    /// Cambiar de pruebas a no pruebas
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public void usbPieHijo_ButtonClick(System.Object sender, Infragistics.Win.UltraWinStatusBar.PanelEventArgs e)
    {
        switch (e.Panel.Key)
        { case "usbRecalcular": clsUtilesGescan.RecalcularGastosRetiradas(); break; }
    }
    //
    private void PrincipalMaca_Load(object sender, EventArgs e)
    {
        string strMailsRenovacion = "";
        string strSociosSinMail = "";
        DateTime datRenovacion;
        MySql.Data.Types.MySqlDateTime MySqldatInscripcion;
        int intMesesRenovacion;
        //Balance Debe-HAber
        Infragistics.Win.UltraWinStatusBar.UltraStatusPanel uspBalance;
        Label lblBalanceGastos;
        string strTextoLabel = "";
        //
        if (((frmPrincipalBase)(this)).IsDisposed) { this.Close(); }  //----Control padre cerrado
        else if (!System.IO.File.Exists(clsVariables.str_DllControlSerial))  //----Control de evaluación
        {
            using (frmSerial _frmSerial = new frmSerial()) { _frmSerial.ShowDialog(); }
            //System.Windows.Forms.MessageBox.Show("Se ha superado el período de prueba", "Atención"); 
            //this.Close();
        }
        else //Seguimos
        {
            this.usbPie.ButtonClick += new Infragistics.Win.UltraWinStatusBar.PanelEventHandler(this.usbPieHijo_ButtonClick); //asociar delegado
            //--- Crear labels totales
            uspBalance = clsVariables.frm_Principal.usbPie.Panels["usbGastosRetiradas"];
            Panel pnlLabels = new Panel();
            uspBalance.Control = pnlLabels;
            //pnlLabels.BackColor = System.Drawing.Color.LightBlue;
            //pnlLabels.Dock = DockStyle.Fill;
            string[] arrLabels = { "lblGastos", "Gastos: ", " / ", "lblRetiradas", "Retiradas: ", " / ", "lblBalance", "Balance: " };
            for (int i = 0; i < arrLabels.Length; i++)
            {
                strTextoLabel = arrLabels[i];
                if (strTextoLabel.Substring(0, 3) == "lbl") { strTextoLabel = ""; }
                lblBalanceGastos = new Label();
                lblBalanceGastos.AutoSize = true;
                //lblBalanceGastos.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
                lblBalanceGastos.Name = arrLabels[i];
                lblBalanceGastos.Text = strTextoLabel;
                pnlLabels.Controls.Add(lblBalanceGastos);
                lblBalanceGastos.Dock = DockStyle.Left;
                lblBalanceGastos.Padding = new System.Windows.Forms.Padding(0, 2, 0, 0);
            }
            //      
            clsUtilesGescan.RecalcularGastosRetiradas();
            //----Control de que no hay socios pendientes de renovación
            intMesesRenovacion = (int)clsBBDD.ObtenerVariables("MREN", clsVariables.e_TipoOrigen.Cliente); //Cada cuantos meses renuevan los socios
            System.Data.DataTable DtSocios = clsBBDD.DtObtener(
               " Select  s.idsocio,s.nombre,s.apellidos,s.email,s.fechaalta,s.fecharenovacion " +
                  " from socios s Where s.cuotapagada = 0 And (fechamortalidad IS NULL Or fechamortalidad = '0000-00-00')",
                  clsVariables.e_TipoOrigen.Cliente, false); //Obtener los socios que no han pagado la cuota
            //Comprobar si su fecha inscripción supera
            foreach (System.Data.DataRow DrSocio in DtSocios.Rows)
            {
                MySqldatInscripcion = (MySql.Data.Types.MySqlDateTime)Utiles.General.ScpIsNull(DrSocio["fecharenovacion"], null);
                datRenovacion = (System.DateTime)clsBBDD_MySQL.MySql_ConvertirMySqlDateTimeToDate(MySqldatInscripcion);
                if (datRenovacion == null)
                {
                    throw new Exception("Hay socios con fechas de renovación en blanco!" +
                                         " No continuará el checkeo hasta que se corriga");
                }
                if (System.DateTime.Now > datRenovacion) //datRenovacion.AddMonths(intMesesRenovacion)
                {
                    if ((string)Utiles.General.ScpIsNull(DrSocio["email"], string.Empty) == string.Empty)
                    { strSociosSinMail += DrSocio["idsocio"] + ", "; }
                    else { strMailsRenovacion += DrSocio["email"] + ", "; }
                }
            }
            //
            if (strSociosSinMail != string.Empty) //Si ha habido socios que tocaba renovar pero no tenía mails
            {
                strSociosSinMail = strSociosSinMail.Substring(0, strSociosSinMail.Length - 2);
                System.Windows.Forms.MessageBox.Show("Los siguientes codigos de socio no tienen mail y no se copiarán al " +
                                  "portapapeles: " + strSociosSinMail, "Atención");
            }
            //
            if (strMailsRenovacion != string.Empty) //COpiar los mails de las renovaciones
            {
                strMailsRenovacion = strMailsRenovacion.Substring(0, strMailsRenovacion.Length - 2);
                //System.Windows.Forms.Clipboard.SetText(strMailsRenovacion); //TODO...Error?
                //System.Windows.Forms.MessageBox.Show("Se han copiado los emails de los socios pendientes de renovación" +
                //   " sin fecha de mortalidad y en estado 'no pagado' en el portapapeles.  " + Environment.NewLine +
                //   "No se olvide de marcarlos como 'pagados' y actualizar " +
                //   " su 'fecha de renovación' sino quiere que se obtengan en la próxima apertura.", "Comprobado");
                MessageBox.Show("Se abrira formulario con los mails de los socios pendientes de renovación" +
                   " sin fecha de mortalidad y en estado 'no pagado'.  " + Environment.NewLine +
                   "No se olvide de marcarlos como 'pagados' y actualizar " +
                   " su 'fecha de renovación' sino quiere que se obtengan en la próxima apertura.", "Comprobado");
                using (frmAux FormAux = new frmAux(strMailsRenovacion) { Text = "Socios pendientes.." })
                { FormAux.ShowDialog(); }
            }
            //----Control de que no hay socios pendientes de renovación

            //Check update
            clsUpdateApp _clsUpdateApp = new clsUpdateApp();
            
            try { _clsUpdateApp.InstallUpdateAsyncWithInfo(true); }
            catch (Exception) { _clsUpdateApp = null; }          
        }
    }

}

